Síťová komunikace

Moderní vlastností Imagine je síťová komunikace mezi počítači. Je možné posílat zprávy, objekty nebo spouštět procedury na jiném počítači buď v lokální síti nebo připojeném na Internet (ale zřejmě jen pokud vlastní veřejnou IP adresu).
(Pozn.: všechny dále popsané příkazy je možné vyzkoušet také na jednom počítači, je potřeba spustit Imagine s parametrem, což lze jen z příkazového řádku - Start - Spustit - "C:\Program Files\Imagine\imagine.exe" /m)

Pro práci v síti využívá Imagine třídu NET (spojení). Nový objekt (instanci) této třídy vytvoříme stejně jako v minulých lekcích příkazem new :
new "net []
Podobně jako v předešlých lekcích by bylo možné do hranatých závorek zapsat vlastnosti připojení, k tomu ale můžeme využít také okno Paměť, ve kterém po vykonání uvedeného příkazu najdeme nový objekt (jeho implicitní název je net1).

Jeden z počítačů musí mít nastavený typ spojení server. Bude to počítač, ke kterému se budou připojovat všechny ostatní, pokud bude na tomto počítači spojení ukončeno, ukončí se i všechna ostatní spojení (obrázek vlevo).
Dalším počítačům nastavíme typ spojení Klient. Přezdívky je možné a vhodné upravit (například podle jména uživatele), budou se zobrazovat při komunikaci. U klientů je potřeba zapsat server - to může být buď název počítače nebo jeho IP adresa (localhost jako na obrázku lze použít při pokusech na jednom počítači). Název počítače lze zjistit ve vlastnostech Místa v síti (Okolní počítače ve W98) a identifikaci. IP adresu zjistíte také například pokud z příkazového řádku spustíte cmd a v příkazovém okně použijete příkaz ipconfig.
Po těchto nastaveních je možno tlačítkem Spoj spustit spojení (nejprve na serveru). Je-li vše v pořádku, hlášení u tlačítka se změní na Spojení navázáno. Na záložce Spojení potom můžete poslat zprávu buď všem účastníkům nebo jen vybraným adresátům.
Z příkazového řádku (nebo v proceduře) můžeme zprávu poslat příkazem send:
net1'send [] "ahoj
V hranatých závorkách bychom uvedli přezdívky adresátů, pokud budou prázdné, bude zpráva odeslána všem. Pokud bychom chtěli poslat více než jedno slovo, je potřeba uzavřít zprávu do hranatých závorek:
net1'send [Jirka Vasek] [ahoj kluci jdeme na fotbal?]
Abychom nemuseli stále sledovat, zda nám nějaká zpráva dorazila, můžeme využít událost spojení priPříjmuZprávy, viz obrázek na záložce Základní. Pokud pro tuto událost použijeme příkaz pr (zkratka příkazu print), můžeme zprávu vytisknout do textové obrazovky:
pr message
Pro výstup do grafické obrazovky slouží příkaz label, další možnost jak využít událost priPříjmuZprávy by bylo:
t1'label message t1'bk 20
(želvu bychom předtím umístili do levého horního rohu grafické obrazovky a zrušili bychom jí kreslení). Pro změnu fontu písma pro výpis do grafické obrazovky slouží příkaz setfont s parametry, které můžete navolit po stisku klávesy F9 (s pomocníkem). Barva textu je určena barvou čáry (tedy setpc).
Pro zobrazení připojených uživatelů lze použít příkaz:
pr net1'users - pr (print) vytiskne seznam do textové obrazovky


Projekt ulož pod názvem spojeni.imp !

Úkoly:

Základní úloha

Se sousedem (nebo několika sousedy) vytvořte spojení a vyzkoušejte posílání zpráv se zobrazením do textové i grafické obrazovky. Pro výstup do grafické obrazovky zvolte jiný druh písma a náhodnou barvu pro každou zprávu.


Úloha na plus:

Vytvořte jednoduchý chatovací program podle obrázku. Přijaté zprávy se zobrazují v horní části (např. papíře), zprávy k odeslání se zapisují do textového pole ve spodní části. Kliknutím na tlačítko odesílá uživatel zprávu všem.


Úloha pro experty:

Doplňte chatovací program z úlohy na plus o možnost odeslat zprávu jen některým uživatelům.